package com.guigu.guliware.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.guigu.gulicommon.entity.dto.WareSkuLockDto;
import com.guigu.gulicommon.entity.dto.mq.StockLockedDto;
import com.guigu.gulicommon.entity.pojo.res.Res;
import com.guigu.gulicommon.entity.vo.HasStockSkuVo;
import com.guigu.gulicommon.entity.vo.LockStockVo;
import com.guigu.guliware.entity.WmsWareSku;
import org.springframework.amqp.core.Message;

import java.util.List;

/**
 * <p>
 * 商品库存 服务类
 * </p>
 *
 * @author 陈俊杰
 * @since 2024-08-24
 */
public interface IWmsWareSkuService extends IService<WmsWareSku> {
    /**
     * 根据skuId查询商品库存
     *
     * @param skuIds skuId
     * @return 单款商品库存信息
     */
    Res<HasStockSkuVo> getStockBySkuIds(List<Long> skuIds);

    /**
     * 锁定订单对应的商品库存
     *
     * @param wareSkuLockDto 锁定库存信息
     * @return 锁定结果
     */
    Res<LockStockVo> orderLockStock(WareSkuLockDto wareSkuLockDto);

    /**
     * 监听库存解锁,锁定队列
     *
     * @param stockLockedDto 解锁库存信息
     * @param message        消息
     */
    void handleStockLockedRelease(StockLockedDto stockLockedDto, Message message);
}
